<?php

class QuanlyController extends Controller
{
    public function __construct($action = 'index')
    {
        if (!isset($_SESSION['user'])) {
            $url = ROOT_URL . 'canbo/login';
            header("location: {$url}");
        } elseif ($_SESSION['user']['type'] != 'admin') {
            throw new Exception('Không đủ quyền khởi tạo chức năng quản lý!');
        } else {
            parent::__construct($action);
        }
    }

    public function canbo($params)
    {
        if (preg_match('/^$/', $params)) {
            $params = 'trang-1/';
        }
        # Phân tích từ khóa tìm kiếm từ param dạng keyword/trang-1
        $pattern = '/^trang-(?P<_page>\d+)|(?:(?P<keyword>.+?)\/)?(?:trang-(?P<page>\d+))?/';
        if (!preg_match($pattern, $params, $match)) {
            throw new Exception('Phát sinh lỗi cú pháp tìm kiếm!');
        } else {
            $keyword = '';
            $page = 1;
            if (isset($match['_page'])) {
                $page = $match['_page'];
            }
            if (isset($match['page'])) {
                $page = $match['page'];
            }
            if (isset($match['keyword'])) {
                $keyword = $match['keyword'];
            }

            $data = $this->_model->getListCanbo($keyword);

            if (count($data) == 0) {
                throw new Exception("Tìm kiếm cán bộ cho từ khóa <strong>{$keyword}</strong> không có kết quả!");
            }


            $appConfig = $GLOBALS['config'];
            $paginator = new Paginator(count($data), $page);
            $paginator->pagesToDisplay = $appConfig->paginator->pages_to_display;
            $paginator->recordsPerPage = $appConfig->paginator->records_per_page;




            $displayData = array();
            $ul_p = array();
            for ($i = $paginator->lowOffsetRecord; $i <= $paginator->highOffsetRecord; $i++) {
                $data[$i]['cb_stt'] = $i + 1;
                $displayData[] = $data[$i];
            }

            $keyword .= strlen($keyword) > 0 ? '/' : '';
            if ($paginator->showFirst){
                $ul_p[] = array(
                    'keyword' => $keyword,
                    'page' => 1,
                    'page_desc' => 'Trang đầu',
                    'class' => 'normal'
                );
            }
            for ($i = $paginator->lowOffset; $i <= $paginator->highOffset; $i++) {
                $class = ($paginator->currentPage == $i) ? 'current' : 'normal';
                $ul_p[] = array(
                    'keyword' => $keyword,
                    'page' => $i,
                    'page_desc' => $i,
                    'class' => $class
                );

            }
            if ($paginator->showLast) {
                $ul_p[] = array(
                    'keyword' => $keyword,
                    'page' => $paginator->totalPages,
                    'page_desc' => 'Trang cuối',
                    'class' => 'normal'
                );
            }


            $this->assign('cb_list', $displayData);
            $this->assign('paginator', $ul_p);

        }
    }
    public function view($id = null)
    {

    }
}